package org.endy.leisure.diaTracker.util

import cn.hutool.core.img.Img
import java.io.ByteArrayInputStream
import java.io.File
import java.text.SimpleDateFormat
import java.util.Base64
import java.util.Date
import java.util.UUID

object CommUtils {
    // 按照日期生成子文件夹，使用UUID生成文件名称，图片保存为jpg，并返回图片的文件名
    fun saveBase64ImageToFile(base64String: String, baseDirectory: String): String? {
        return try {
            // 去除base64头信息（如果存在）
            val base64Data = if (base64String.contains(",")) {
                base64String.split(",")[1]
            } else {
                base64String
            }

            val decodedBytes = Base64.getDecoder().decode(base64Data)
            val today = SimpleDateFormat("yyyy-MM-dd").format(Date())
            val fileDir = File("$baseDirectory/$today")
            if (!fileDir.exists()) {
                fileDir.mkdirs()
            }
            val fileName = "${UUID.randomUUID()}.jpg"
            val file = File("$fileDir/$fileName")
//            file.writeBytes(decodedBytes)
            Img.from(ByteArrayInputStream(decodedBytes)).write(file)
            "$today/$fileName"
        } catch (e: Exception) {
            e.printStackTrace()
            null
        }
    }

    /**
     * md5签名
     */
    fun md5Sign(input: String): String {
        val md = java.security.MessageDigest.getInstance("MD5")
        val digest = md.digest(input.toByteArray())
        return digest.joinToString("") { "%02x".format(it) }
    }

    /**
     * 图片压缩，输入图片的字节数组，返回压缩后的字节数组
     */
    fun compressImage(imageBytes: ByteArray): ByteArray {
        Img.from(ByteArrayInputStream(imageBytes)).scale(0.5f).to(File(""))
        return imageBytes
    }
}